package cn.fl.flow.transform;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.flow.vo.FlowMyTaskVO;
import flow.business.facade.flow.dto.FlowMyTaskDTO;


import java.util.ArrayList;
import java.util.List;

/**
* @Description: 我的任务转换器
* VO是客户端传递数据到服务端进行转换的数据 
* VO转换数据变成DTO传递到服务端 
* VO不能在服务端出现
*/
public class FlowBusinessMyTaskVOTransform {

	/**
	 * DTO 转  VO
	 * @param dto SysPgInfoDTO
	 * @return SysPgInfoVO
	 */
	public static FlowMyTaskVO toVO(FlowMyTaskDTO dto) {
		FlowMyTaskVO  vo = null;
		if (dto != null) { 
			vo = new FlowMyTaskVO();
			vo.setId(dto.getId());
			vo.setProcessDefinitionId(dto.getProcessDefinitionId());
			vo.setProcessDefinitionKey(dto.getProcessDefinitionKey());
			vo.setProcessInstanceId(dto.getProcessInstanceId());
			vo.setBusinessKey(dto.getBusinessKey());
			vo.setExecutionId(dto.getExecutionId());
			vo.setTaskId(dto.getTaskId());
			vo.setTaskDefKey(dto.getTaskDefKey());
			vo.setName(dto.getName());
			vo.setAssignee(dto.getAssignee());
			vo.setOwner(dto.getOwner());
			vo.setAssignable(dto.getAssignable());
			vo.setFormUrl(dto.getFormUrl());
			vo.setSequenceFlowVOList(FlowBusinessBranchVOTransform.toVOList(dto.getSequenceFlowDTOList()));//组件集合
			vo.setParentTaskId(dto.getParentTaskId());
			vo.setPriority(dto.getPriority());
			vo.setPriorityNm(dto.getPriorityNm());
			vo.setSuspensionState(dto.getSuspensionState());
			vo.setTaskDesc(dto.getTaskDesc());
			vo.setSysCd(dto.getSysCd());
			vo.setInitiator(dto.getInitiator());
			vo.setTaskType(dto.getTaskType());
			vo.setStatus(dto.getStatus());
			vo.setOriginTaskId(dto.getOriginTaskId());
			vo.setCandidateUsers(dto.getCandidateUsers());
			vo.setActivityType(dto.getActivityType());
			vo.setStartTime(dto.getStartTime());
			vo.setEndTime(dto.getEndTime());
			vo.setDuration(dto.getDuration());
			vo.setDurationStr(dto.getDurationStr());
			vo.setOutgoingFlow(dto.getOutgoingFlow());
			vo.setTaskTypeNm(dto.getTaskTypeNm());
			vo.setStatusNm(dto.getStatusNm());
			vo.setAssigneeNm(dto.getAssigneeNm());
			vo.setOwnerNm(dto.getOwnerNm());
			vo.setInitiatorNm(dto.getInitiatorNm());
			vo.setProcessDefinitionNm(dto.getProcessDefinitionNm());
			vo.setBusinessType(dto.getBusinessType());
			vo.setBusinessTypeNm(dto.getBusinessTypeNm());
			vo.setProcStatus(dto.getProcStatus());
			vo.setProcStatusNm(dto.getProcStatusNm());
			vo.setBeanName(dto.getBeanName());
			vo.setProcNo(dto.getProcNo());
			vo.setCstId(dto.getCstId());
			vo.setCstNm(dto.getCstNm());
			vo.setGroupShare(dto.getGroupShare());
			vo.setOrgNm(dto.getOrgNm());
			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getCrtUsrId());//修改人
			vo.setPreTaskId(dto.getPreTaskId());
			vo.setIsFormAuth(dto.getIsFormAuth());
		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo MyTaskRecordVO
	 * @return MyTaskRecordDTO
	 */
	public static FlowMyTaskDTO toDTO(FlowMyTaskVO vo) {
		FlowMyTaskDTO dto = null;
		if (vo != null) {
			dto = new FlowMyTaskDTO();
			dto.setId(vo.getId());
			dto.setProcessDefinitionId(vo.getProcessDefinitionId());
			dto.setProcessDefinitionKey(vo.getProcessDefinitionKey());
			dto.setProcessInstanceId(vo.getProcessInstanceId());
			dto.setBusinessKey(vo.getBusinessKey());
			dto.setExecutionId(vo.getExecutionId());
			dto.setTaskId(vo.getTaskId());
			dto.setTaskDefKey(vo.getTaskDefKey());
			dto.setName(vo.getName());
			dto.setAssignee(vo.getAssignee());
			dto.setOwner(vo.getOwner());
			dto.setAssignable(vo.getAssignable());
			dto.setFormUrl(vo.getFormUrl());
			dto.setSequenceFlowDTOList(FlowBusinessBranchVOTransform.toDTOList(vo.getSequenceFlowVOList()));//组件集合
			dto.setParentTaskId(vo.getParentTaskId());
			dto.setPriority(vo.getPriority());
			dto.setPriorityNm(vo.getPriorityNm());
			dto.setSuspensionState(vo.getSuspensionState());
			dto.setTaskDesc(vo.getTaskDesc());
			dto.setSysCd(vo.getSysCd());
			dto.setInitiator(vo.getInitiator());
			dto.setTaskType(vo.getTaskType());
			dto.setStatus(vo.getStatus());
			dto.setOriginTaskId(vo.getOriginTaskId());
			dto.setCandidateUsers(vo.getCandidateUsers());
			dto.setActivityType(vo.getActivityType());
			dto.setStartTime(vo.getStartTime());
			dto.setEndTime(vo.getEndTime());
			dto.setDuration(vo.getDuration());
			dto.setDurationStr(vo.getDurationStr());
			dto.setOutgoingFlow(vo.getOutgoingFlow());
			dto.setTaskTypeNm(vo.getTaskTypeNm());
			dto.setStatusNm(vo.getStatusNm());
			dto.setAssigneeNm(vo.getAssigneeNm());
			dto.setOwnerNm(vo.getOwnerNm());
			dto.setInitiatorNm(vo.getInitiatorNm());
			dto.setProcessDefinitionNm(vo.getProcessDefinitionNm());
			dto.setBusinessType(vo.getBusinessType());
			dto.setBusinessTypeNm(vo.getBusinessTypeNm());
			dto.setProcStatus(vo.getProcStatus());
			dto.setProcStatusNm(vo.getProcStatusNm());
			dto.setBeanName(vo.getBeanName());
			dto.setProcNo(vo.getProcNo());
			dto.setCstId(vo.getCstId());
			dto.setCstNm(vo.getCstNm());
			dto.setGroupShare(vo.getGroupShare());
			dto.setOrgNm(vo.getOrgNm());
			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getCrtUsrId());//修改人
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * @param list List<MyTaskRecord>
	 * @return List<MyTaskRecordDTO>
	 */
	public static List<FlowMyTaskVO> toVOList(List<FlowMyTaskDTO> list) {
		List<FlowMyTaskVO>  voList = new ArrayList<FlowMyTaskVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (FlowMyTaskDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}
	
}
